package br.com.werp.regras.acesso.integracao;

import br.com.werp.regras.geral.Debuger;
import br.com.werp.regras.geral.integracao.MasterDAO;
import br.com.werp.regras.geral.util.Util;
import br.com.werp.regras.geral.vos.tabelas.Usuario;

import java.sql.Connection;

import java.util.List;


/**
 * @author Sobreira
 * Criado em 13/07/2005
 */
public class UsuarioDAO extends MasterDAO {
    private static UsuarioDAO usuarioDAO;

    /**
     * @param banco
     * @throws Exception
     */
    private UsuarioDAO(String banco) throws Exception {
        super(banco);
    }

    public static UsuarioDAO getUsuarioDAO() throws Exception {
        if (usuarioDAO == null) {
            usuarioDAO = new UsuarioDAO("");
        }

        return usuarioDAO;
    }

    public void atualizaUsuario(Object key, Usuario usuario,
        boolean atualizarSenha) throws Exception {
        String[] excluidas = new String[] {  };

        if (!atualizarSenha) {
            excluidas = new String[] { "Usur_senha" };
        }

        Connection connection = validarTransacao(key);
        atualizarVO(connection, usuario, new String[] { "usur_login" },
            excluidas);
    }

    public void inserirUsuario(Object key, Usuario usuario)
        throws Exception {
        Connection connection = validarTransacao(key);
        inserirVO(connection, usuario);
    }

    public List pesquisarUsuarios(Usuario usuario) throws Exception {
        Connection connection = getConexao();
        String where = "";
        try {
            if (!Util.isNullOrEmpty(usuario.getUsur_nome())) {
                where += " and Usur_nome like "+ aspasLike(usuario.getUsur_nome().toUpperCase());
                usuario.setUsur_nome(null);
            }

            if (!Util.isNullOrEmpty(usuario.getUsur_login())) {
                where += " and Usur_login like "+ aspasLike(usuario.getUsur_login().toLowerCase());
                usuario.setUsur_login(null);
            }

            return pesquisarVO(connection, usuario,where);
        } finally {
            liberaConeccao(connection);
        }
    }
    
    public List pesquisarUsuariosSemLike(Usuario usuario) throws Exception {
        Connection connection = getConexao();
        try {
            return pesquisarVO(connection, usuario);
        } finally {
            liberaConeccao(connection);
        }
    }
}
